package d0523_io;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;

public class 流 {

	public static void main(String[] args) throws IOException, InterruptedException {
		// 文件输出字节流   true 表示在文件内容后面追加新的内容
		FileOutputStream fos = new FileOutputStream("d:/driver/a.txt");

		// 将字符串转成字节数组
		String s = "hello world";
		byte[] bs = s.getBytes();
		fos.write(bs);
		
		// 休眠1分钟
		Thread.sleep(60000);

		// 关闭输出流, 未关闭的文件会一直锁定
		fos.close();

		// 文件输入字符流,  资源类型定义在流名字的最前面
		FileReader fr = new FileReader("D:\\eclipse\\eclipse.ini");

		// 定义缓冲字符数组
		char[] buffer = new char[100];
		int count = 0;
		// read 返回读取的字符数, 如果没有读取到, 返回 -1
		while ((count = fr.read(buffer)) > -1) {
			String str = new String(buffer, 0, count);
			System.out.println(str);
		}
		fr.close();

	}

	/**
	 * FileNotFoundException 是 IOException 的子类
	 * @throws IOException 
	 */
	public static void test1() throws IOException {
		// 文件输入字符流,  资源类型定义在流名字的最前面
		FileReader fr = new FileReader("d:/driver/a.txt");

		// 文件输出字节流   true 表示在文件内容后面追加新的内容
		FileOutputStream fos = new FileOutputStream("d:/driver/a.txt", true);

		// 文件输入字节流
		FileInputStream fis = new FileInputStream("d:/driver/a.txt");

		fis.read();// 读取并返回一个字节
		fis.read(new byte[1024]); // 读取一段数据到数组中
		fis.read(new byte[1024], 0, 10); //读取一段指定长度数据到数组中

		// 缓冲字节输入流  , bis 是一个处理流
		BufferedInputStream bis = new BufferedInputStream(fis);
		BufferedReader br = new BufferedReader(fr);
		br.readLine(); // 读入整行
	}

}
